package co.edu.udea.iw.prestamodispositivos.serviciosweb.rest;


import java.util.ArrayList;
import java.util.List;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import org.springframework.stereotype.Component;

import co.edu.udea.iw.prestamodispositivos.bl.DispositivoService;
import co.edu.udea.iw.prestamodispositivos.dto.Dispositivo;
import co.edu.udea.iw.prestamodispositivos.excepciones.IWBLException;
import co.edu.udea.iw.prestamodispositivos.logic.dto.DispositivodtoServ;
import co.edu.udea.iw.prestamodispositivos.logic.dto.TipoDisponibilidadServ;

/**
 * Clase que representa los Servicios Web referentes a los dispositivos, en esta se incluye consultar todos 
 * los dispositivos disponibles
 * @author JuanF
 *
 */

@Component
@Path("dispositivos")
public class WSDispositivo {
	
	/**
	 * Entidad encargada de acceder a los datos de los dispositivos.
	 */
	
	DispositivoService dispositivoService;

	
	public DispositivoService getDispositivoService() {
		return dispositivoService;
	}


	public void setDispositivoService(DispositivoService dispositivoService) {
		this.dispositivoService = dispositivoService;
	}


	/**
	 * Servicio web para consultar dipositivos disponibles
	 * @return todos los dispositivos disponibles
	 * @throws IWBLException 
	 */
	@Produces(MediaType.APPLICATION_JSON)
	@GET
	@Path("dispositivosDisponibles")
	public List<DispositivodtoServ> getAllAvailablesDispositivos() throws IWBLException{
		List<DispositivodtoServ> dispositivosDisponibles= new ArrayList<DispositivodtoServ>();
		try {
			List<Dispositivo> dispositivos= dispositivoService.getAvailableDispositivos();
			for (Dispositivo c: dispositivos) {
				dispositivosDisponibles.add(new DispositivodtoServ(c.getIdDispositivo(),new TipoDisponibilidadServ(c.getTipodisponibilidad().getIdTipoDisponibilidad(),
						c.getTipodisponibilidad().getDescripcion()),c.getDescripcion(), c.getEstado()));
				
			}
			
			
			
		} catch (Exception e) {
			System.out.println(e.getMessage());
			throw new IWBLException("No se han podido listar los dispositivos");
			
		}
		return dispositivosDisponibles;
	}
	
	

	
}
